<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // 1 + '1'   //  '11'


        // 基本数据类型   5种    可以进行相互转化

        //    强制转化  强行转化

        //    隐式转化  程序自己完成的转化

        //        算术运算符   -  *  /  %   都转为数字

        //        逻辑运算符   !   转布尔值

        //        比较运算符
        //            两边都是字符串   就比较ASCII            'b' > 'a'  
        //            除此以外     都比较数值  ->   转数字     'a' > 1     NaN > 1    -> false
        //            null == undefined
        //            null == 的时候，都不转化    null == 0  错的          null == false  错的

        //       +号的问题
        //            只要有字符串   就是拼接   ->  字符串
        //            除此以外都是求和  -> 转数字






        // 其他的转成字符串
        //   任何类型转字符串都是  加引号

        // 其他类型转布尔值
        //   0  NaN   false 
        //   ''   false 
        //   null   false 
        //   undefined  false

        // 其他转数字
        //    字符串转数字
        //          ''  -> 0
        //          '2'  -> 2
        //          '2a'  -> NaN
        //    true -> 1   false -> 0
        //    null -> 0
        //    undefined -> NaN
 


        var a = 1 ;
        var b = '1' ;
        var c = a + b ;    // 在计算的时候，a存的值 1  会自动转化为字符串1   
        
        console.log(c) ;   // '11'

        // a没变   变量只能通过赋值才会发生改变
        console.log(a) ;   // 1 

        console.log('a' + null) ;   // 'anull'

    </script>
    
</body>
</html>